
// for (var i = 1; i <= 100; i++) {
//     console.log(i)
// }


// ConmonJS默认载入时会立即执行, 返回模块中暴露的变量和方法

// (1) ES6模块化中返回的是对变量的引用,如果对应的值改变,再次使用变量时,返回的是最新的值
// (2) ConmonJS模块化返回的是变量对应的值, 解构后赋值给新的变量,值的改变不会自动同步到新的变量

// 讨论 Node.js 加载 ES6 模块之前，必须了解 ES6 模块与 CommonJS 模块完全不同。

//     它们有三个重大差异。
//     CommonJS 模块输出的是一个值的拷贝，ES6 模块输出的是值的引用。
//     CommonJS 模块是运行时加载，ES6 模块是编译时输出接口。
//     CommonJS 模块的require()是同步加载模块，ES6 模块的import命令是异步加载，有一个独立的模块依赖的解析阶段。

// var x = 1;
// var y = x;


// 整体载入 => 引入模块a中暴露的所有变量和方法(对象)
let mdA = require("./a.js");
console.log(mdA);

// 按需引入
let { b, addB, reduceB } = require("./b.js");
console.log(b, addB, reduceB);

let Cat = require("./c.js");
console.log(Cat);


/* console.log(mdA.a);
mdA.addA();
mdA.addA();
mdA.addA();
mdA.addA();
mdA.addA();
console.log(mdA.a);
console.log(mdA.getA()); */

